<?php
/**
 * WDPHP  入口文件
 * @package 		WDPHP
 * @author 			肖伟 
 * @version 		v1.0
 * @copyright 		Copyright (c) 2012. widuu.com
 */
		
		
		header("Content-type:text/html;charset=utf-8"); //设置编码为utf-8
		date_default_timezone_set('PRC');				//设置时区为中国
		session_start();								//开启session

		define("IN_WDPHP",true);						//设置安全机制
		define("WDPHP_VERSION","WDPHP\tv1.0");					//版本申明
		define("WDPHP_PATH",rtrim(WDPHP,"/")."/");  	//项目框架路径
		define("APP_PATH",rtrim(APP_PATH,"/")."/"); 	//用户的应用路径
		define("APP_NAME",trim(APP_PATH,"./"));			//设置项目名称
		define("__ROOT__",dirname("WDPHP_PATH")."/");	//项目的根目录
		define("TMP_PATH", basename(ltrim($_SERVER["SCRIPT_NAME"])."/",'.php')."/");

		//设置smarty信息

		if(!defined("TMP_L"))define("TMP_L","<{");      //设置smarty的左边的标记
		if(!defined("TMP_R"))define("TMP_R","}>");		//设置smarty的右边的标记

		//包含系统配置的文件 

		$config=__ROOT__."config.inc.php";
		if(file_exists($config)){
			include $config;
		}
		
		//设置Debug模式
		if(defined("DEBUG") && DEBUG==1){
			$GLOBALS["Debug"]=1;                 //初例化开启debug
			error_reporting(E_ALL ^ E_NOTICE);   //输出除了注意的所有错误报告
			include WDPHP_PATH."Core/Action/Debug.class.php";  //包含debug类
			Debug::start();                               //开启脚本计算时间
			set_error_handler(array("Debug", 'Catcher')); //设置捕获系统异常
		}else{
			ini_set('display_errors', 'Off'); 		//屏蔽错误输出
			ini_set('log_errors', 'On');             	//开启错误日志，将错误报告写入到日志中
			ini_set('error_log', __ROOT__.'Runtime/error_log'); //指定错误日志文件

		}
		
		//包含框架的核心函数库文件

		 include WDPHP_PATH."Common/functions.php";
		 
		//包含全局的函数库文件，用户自定义的函数库

		 $functions=__ROOT__."Common/functions.php";

		if(file_exists($functions)){
			include $functions;
		}
		
		//设置包含目录（类所在的全部目录）,  PATH_SEPARATOR 分隔符号 Linux(:) Windows(;)
		$path=get_include_path();       					 //原始基目录
		$path.=PATH_SEPARATOR.WDPHP_PATH."Core/DB/";		 //数据库类库	
		$path.=PATH_SEPARATOR.WDPHP_PATH."Core/Action/";  	 //项目所在的核心类文件
		$path.=PATH_SEPARATOR.WDPHP_PATH."Lib/";   			 //框架的扩展类目录
		$path.=PATH_SEPARATOR.WDPHP_PATH."View/";       	 //smarty模板类所在的文件
		$path.=PATH_SEPARATOR.__ROOT__."Class/";   			 //项目用到的工具类
		$controlerpath=__ROOT__."Runtime/Action/wd_".TMP_PATH; //生成控制器所在的路径
		$path.=PATH_SEPARATOR.$controlerpath;      			 //当前应用控制类所在的目录
		
		//设置include 包含所有文件夹的目录
		set_include_path($path);

		
		
			
		//自动加载类

		function __autoload($className){
			switch($className){
				case "memcache":
								return;
								break;
				case "Smarty" :
								include "Smarty.class.php";
								break;
				default :
								include ucfirst($className).".class.php";
								break;
							
			}
			Debug::addmsg("<b> $className </b>类", 1); 
		}
		
		//判断页面是否开启静态缓存
		if(CSTART==0){
			Debug::addmsg("<font color='red'>没有开启页面缓存!</font>");
		}else{
		Debug::addmsg("开启页面缓存，实现页面静态化!"); 
		}
		
		
		
		Filecreate::create();
		Router::praseurl();    //解析处理URL
		
		
		//模板文件中所有要的路径，html\css\javascript\image\link等中用到的路径，从WEB服务器的文档根开始
		
		$spath=dirname($_SERVER["SCRIPT_NAME"]);
		if($spath=="/" || $spath=="\\")
			$spath="";
		
		define('__DUC__',$spath.'/');														//项目的根目录文件					
		define('__APP__',$_SERVER["SCRIPT_NAME"].'/');										//当前执行的脚本文件
		define('__URL__',__APP__.$_GET["m"].'/');											//当前执行的模块
		define('__PUBLIC__',__DUC__.'Public/');												//公共资源目录根目录下./Public
		define('__DATA__',__DUC__.ltrim(APP_PATH, './')."Templets/".TPL_STYLE."/data/");	//各项目风格下其他资源
		

		//控制器类所在的路径
		$srccontrolerfile=APP_PATH."/Action/".ucfirst($_GET["m"]).".class.php";
			
		Debug::addmsg("当前访问的控制器类在项目应用目录下的: <b>$srccontrolerfile</b> 文件！");
			
		
		if(file_exists($srccontrolerfile)){
			Filecreate::commoncontroler(APP_PATH."/Action/",$controlerpath);
			Filecreate::action($srccontrolerfile, $controlerpath, $_GET["m"]); 

			$className=ucfirst($_GET["m"])."action";
			$controler=new $className();
			$controler->run();

			}else{
			Debug::addmsg("<font color='red'>对不起!你访问的模块不存在,应该在".APP_PATH."/Action目录下创建文件名为".strtolower($_GET["m"]).".class.php的文件，声明一个类名为".ucfirst($_GET["m"])."的类！</font>");
			}
			
			
		//设置输出Debug模式的信息
		if(defined("DEBUG") && DEBUG==1 && $GLOBALS["Debug"]==1){
			Debug::stop();
			Debug::message();
		}

		